package com.xu.cloud.common.constant;

import java.util.regex.Pattern;

/**
 * 加解密常量
 *
 * @author xuguan
 * @since 2024/9/2
 */
public interface CryptConstant extends Constant {

    /**
     * 密钥长度
     */
    int KEY_LENGTH_128 = 128;
    int KEY_LENGTH_192 = 192;
    int KEY_LENGTH_256 = 256;

    /**
     * 摘要加密算法
     */
    String MD5_DIGEST_ALGORITHM = "MD5";
    String SHA256_DIGEST_ALGORITHM = "SHA-256";
    String SHA512_DIGEST_ALGORITHM = "SHA-512";
    String SM3_DIGEST_ALGORITHM = "SM3";

    /**
     * 对称加密算法
     */
    String AES_SYMMETRIC_ALGORITHM = "AES";
    String SM4_SYMMETRIC_ALGORITHM = "SM4";

    /**
     * 加密密钥配置名称
     */
    String ENCRYPTION_KEY_PROPERTY_NAME = "encryption.key";

    /**
     * 加密密钥配置值前缀
     */
    String ENCRYPTION_PROPERTY_VALUE_PREFIX = "ENC(";

    /**
     * 加密密钥配置值后缀
     */
    String ENCRYPTION_PROPERTY_VALUE_SUFFIX = ")";

    /**
     * 匹配加密配置值正则表达式
     */
    Pattern ENCRYPTION_PROPERTY_VALUE_PATTERN = Pattern.compile("ENC\\([a-zA-Z0-9+/=]+\\)");

}
